Web Page Authoring Tool for Structured Documents

ABSTRACT

A web page is composed using a browser that displays an authoring web page containing an authoring tool embedded in the authoring web page. The authoring web page, as displayed in a browser window, includes a web page editing region that displays a web page under construction. The web page editing region further includes one or more user-specified instances of structured fields, each instance responsible for hosting content entered directly by the web page author through the browser window or identified by the web page authoring using the authoring tool. A composed web page is published, for example on the Internet. Thereafter, the composed web page can be rendered in a browser window of any client computer or device in a style consistent with the user-entered content in the web page editing region.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.11/118,045, filed Apr. 29, 2005, now U.S. Pat. No. 7,536,641, which isincorporated herein by reference in its entirety.

FIELD OF THE INVENTION

The present invention relates generally to the field of web pagedevelopment and management systems, and in particular, to a web pageauthoring tool that enables a web page author to compose a web page in avisually intuitive manner.

BACKGROUND

Internet provides a convenient channel for people to retrieveinformation. Through a browser window, an Internet user can easilyaccess any one of the billions of web pages published on the Internet.Most web pages are written in a special computer language called“hypertext markup language” (HTML). However, a user must be veryfamiliar with the HTML syntax in order to compose a web page having adesired look-and-feel. A typical unpleasant experience a web page authorhas with preparing an HTML file is that the HTML file, when rendered bya web browser, appears very differently from what the author expected.The web page author may spend many hours to debug and revise the HTMLfile so that when the HTML file is rendered by a web browser, itpresents information or other content in the manner intended by the webpage author.

BRIEF DESCRIPTION OF THE DRAWINGS

The aforementioned aspects of the invention as well as additionalaspects will be more clearly understood as a result of the followingdetailed description of the various embodiments of the invention whentaken in conjunction with the drawings. Like reference numerals refer tocorresponding parts throughout the several views of the drawings.

FIG. 1 is a block diagram illustrating a client-server system inaccordance with some embodiments of the present invention.

FIG. 2A is a block diagram of a client computer in accordance with someembodiments of the present invention.

FIG. 2B is a block diagram illustrating a detailed structure of a webpage authoring tool according to some embodiments of the presentinvention.

FIGS. 3A-3I are a set of schematic screenshots illustrating how a webpage author composes a web page through a browser window using a webpage editor in a WYSIWYG manner.

FIG. 4 is a block diagram of a server computer in accordance with someembodiments of the present invention.

FIG. 5 is a block diagram illustrating the data structure of a webtemplate according to some embodiments of the present invention.

FIG. 6 depicts two block diagrams illustrating typical attributes usedfor characterizing a website and a web page, respectively, according tosome embodiments of the present invention.

FIG. 7 is a block diagram illustrating the data structure of a web pageaccording to some embodiments of the present invention.

DESCRIPTION OF EMBODIMENTS

A first aspect of the present invention is directed to a method forcomposing a web page through a web browser in a visually intuitivemanner. According to some embodiments of the method, a browser window isdisplayed to a web page author on a computer monitor. The browser windowincludes a web page editing region that displays a web page underconstruction. The web page editing region further includes one or moreuser-specified instances of structured fields, each instance responsiblefor hosting a portion of the web page content entered directly by theweb page author through the browser window and I/O devices. Oncepublished (e.g., on the Internet or an intranet), the web page can bedisplayed in a browser window in a style consistent with theuser-entered content in the web page editing region.

A second aspect of the present invention is directed to a web pageauthoring tool, that supports visually intuitive web page authoring andediting. The web page authoring tool is embedded in a web page suitablefor rending by a browser, and includes a website manager, a web pagemanager, and a web page editor. The web page editor includes a pluralityof modules enabling a web page author to compose a web page directlythrough a web browser window in a what-you-see-is-what-you-get (WYSIWYG)manner.

A third aspect of the present invention is directed to a client-serverbased web page development and management system. A client computerincludes a web page having an embedded authoring tool that enables a webpage author to compose a web page directly through a browser window in aWYSIWYG manner. The server computer breaks a composed web page into aset of (key, value) pairs and an associated web template, which arestored in a database accessible to the server computer. In response to arequest for the web page, the server computer generates an HTML fileusing the (key, value) pairs and the web template and transmits the HTMLfile to a requesting client computer to render a web page that has alook-and-feel substantially similar to that of the web page composed ona client computer.

FIG. 1 is a block diagram illustrating a client-server system 100according to some embodiments of the present invention. The system 100includes a plurality of clients 102 (e.g., 102-A, 102-B, 102-C)connected to a server 130 through a network 120. The network 120 may bethe Internet, other wide area networks, local area networks,metropolitan area networks, wireless networks, etc., or any combinationof such communication networks.

In some embodiments, a client (sometimes referred to as a client device)102 hosts at least a client application 104 and a client assistant 106.The client 102 may be a personal digital assistant (PDA), a personalcomputer (PC), a workstation that has a displaying device or any othersuitable client device. The client application 104 may be a web browser(e.g., Firefox™, Safari™, Internet Explorer™, or others) or a standalonebrowser or program that displays a structured document such as a webpage. The client assistant 106 may be embedded in one or more web pagesdownloaded to the client 102 from a remote server. The client assistant106 can include JavaScript instructions embedded in the one or more webpages, and those JavaScript instructions can be executed by the client102 in an environment (e.g., a virtual machine environment or programinterpreter) provided by the client application 104. With the help ofthe client assistant 106, a web page author is able to edit the web pagedirectly through a browser window in a what-you-see-is-what-you-get(WYSIWYG) manner.

It is noted that a web page is any document designed for viewing in abrowser, such as a web browser, regardless of whether the document isaccessed via the Internet, an intranet, or other mechanism. A “window”or “browser window” comprises a virtual graphical display area forviewing a web page, HTML file, XML file or the like. A “window”typically corresponds to a “tab” or “window” or the like in variousbrowser programs.

Changes made by the web page author (e.g., a user of the client 102)are, periodically or upon request, transmitted to the server 130 andstored in one or more storage devices 140 (e.g., a database) that areaccessible to the server 130. In some embodiments, a web page is notstored in the form of an HTML file on the server 130, except when theserver is preparing the web page for distribution to a client 102.Instead, the web page is decomposed into multiple (key, value) pairs,each key identifying a structured field in the web page and each valuecorresponding to the web page content in the structured field. The webpage has an associated web template that includes information definingthe look-and-feel of the web page.

Upon receipt of a request for a particular web page by a user from oneof the clients 102, the server 130 identifies a corresponding set of(key, value) pairs and a web template associated with the web page inthe storage devices 140. The server 130 dynamically generates an HTMLfile using the identified information and returns the HTML file to therequesting client 102.

On the client side, the HTML file is rendered into a web page in a webbrowser window (or more generally, a window of the client application104). In some embodiments, a copy of the client assistant 106 istransmitted to the requesting client if the requesting user is anauthorized user and submits a request to edit the web page. Inparticular, the client assistant 106 may be embedded in a web pagereceived by the client 102 in response to the user's request to edit aspecified web page, or to begin authoring a new web page. The clientassistant works in concert with the web browser to provide the user avisually intuitive editing experience. If the user is not an authorizeduser, or if the user does not intend to update the web page, the HTMLfile is rendered by the web browser in a read-only fashion. No clientassistant is involved in the rendering of the HTML file. In someembodiments, the client assistant 106, or portions of the clientassistant, may be persistently stored at the client 102. In someembodiments, various portions or subsets of the client assistant 106 maybe embedded in different web pages, or the client assistant 106 mayinclude instructions for requesting and downloading additional portionsof the client assistant as needed while the user accesses various webpage composing and editing tools within the client assistant.

FIG. 2A is a block diagram illustrating a client computer 200 inaccordance with some embodiments of the present invention. The clientcomputer 200 typically includes one or more processing units (CPUs) 202,one or more network or other communications interfaces 210, memory 212,and one or more communication buses 214 for interconnecting thesecomponents. The client computer 200 also includes a user interface 204that comprises a display device 206, a keyboard 208, and optionally apointer device 209, e.g., a mouse. The memory 212 includes high speedrandom access memory, such as DRAM, SRAM, DDR RAM or other random accesssolid state memory devices; and may include non-volatile memory, such asone or more magnetic disk storage devices, optical disk storage devices,flash memory devices, or other non-volatile solid state storage devices.The memory 212 may optionally include one or more storage devicesremotely located from the CPUs 202. In some embodiments, the memory 212stores the following elements, modules and data structures, or a subsetor superset thereof:

-   -   an operating system 216 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module (or instructions) 218 for        connecting the client computer 200 to other computers via the        one or more network communications interfaces 210 (through wired        or wireless connections), using the Internet, other wide area        networks, local area networks, metropolitan area networks, or        the like;    -   a web browser module (or instructions) 220 for downloading one        or more user-requested HTML files 224, 226, from a remote        location and rendering the HTML file into a web page on the        display device 206 of the client computer 200;    -   a web-page authoring tool (or instructions) 222 for receiving        user inputs through a browser window and updating a web page in        the browser window in response to the user inputs; the web-page        authoring tool 222 may be embedded in an authoring web page        (HTML file) 226 received from a remote server; and    -   miscellaneous information 221 including the web page displayed        in the browser window and its associated HTML file, user inputs        in the browser window, identifier(s) identifying an ongoing        composing session between the client computer and a remote        server computer, etc.

With the support of the web page authoring tool 222, a web page authorcan directly compose a web page through a browser window using the I/Odevices. According to some embodiments, the web page authoring tool 222is a software package written in Javascript™ (a trademark of SunMicrosystems, Inc.) or ECMAScript (the specification for which ispublished by the European Computer Manufacturers AssociationInternational). The package includes multiple modules, each moduleresponsible for accomplishing one or more designated tasks related tothe construction of the web page.

FIG. 2B is a block diagram illustrating a detailed structure of the webpage authoring tool 222 according to some embodiments of the presentinvention. Based on their respective responsibilities, the modules arepartitioned into four groups:

-   -   Website Manager 230—The website manager performs multiple        website-specific operations and includes modules like:        -   Website Creation Module 233—The website creation module            prompts a user to enter a website title and a website name.            The website title characterizes information hosted by the            website. The website name typically contains a unique string            of alphanumeric characters. In some embodiments, the website            manager suggests a website name based on the user-provided            website title.        -   Website Deletion Module 235—The website deletion module            prompts a user to confirm whether he would like to remove a            website and its associated web pages and resources from the            server computer's database. In some embodiments, a deleted            website cannot be recovered.        -   Website Renaming Module 237—The website renaming module            allows a website's administrator(s) to give the website a            new name and updates the website's record in the database            accordingly.    -   Web page manager 240—The web page manager performs multiple web        page-specific operations and includes modules like:        -   Web page Creation Module 242—The web page creation module            prompts a user to enter a web page title and, optionally, a            universal resource locator (URL) for a new web page. The web            page title serves as an identifier for the web page in the            website manager and in the title bar of a browser window.            The URL serves as the address of the web page after its            publication. If the user's does not enter a URL, a URL is            automatically generated for the web page. In addition, the            user may change the automatically generated URL to an            appropriate website, Internet or Intranet location.        -   Web page Download Module 244—The web page download module            retrieves a user-requested web page from the server computer            and passes it to the web page editor, which displays the web            page in a browser window and makes certain regions in the            web page editable.        -   File upload module 246—The file upload module prompts a user            to enter the address of a file (e.g., an image), verifies            that the file has a unique name, and uploads the file to the            server computer.        -   Web page Deletion Module 248—The web page deletion module            deletes a user-specified web page from a website in the            server computer. The web page, if not yet published, is            deleted. In some embodiments, if the web page has been            published, it is deleted when the website is re-published            according to a predetermined schedule, while in other            embodiments, the web page is deleted from the website            immediately.    -   Web page editor 250—The web page editor is primarily responsible        for creating a WYSIWYG-style editing environment and includes        modules like user input interpreter 252, editing tools module        253, web page save module 254, web page lock module 256, web        page preview module 257, and web page publication module 259,        etc. In some embodiments, the WYSIWYG-style editing environment        provided by the web page editor is an “in-place” WYSIWYG-style        editing environment that enables the user to see the content he        or she is entering or changing in the context of the complete        composed web page. A more detailed discussion about the web page        editor and its modules is provided below in connection with        FIGS. 3A-3I.    -   Web Server Communication Interface 260—The web server        communication interface communicates with a server computer in        response to various requests from the website manager, the web        page manager, and the web page editor.

To appreciate how a web page author composes a web page through abrowser window in a WYSIWYG manner, let us look at a hypotheticalexample. Suppose that there is a cafeteria on a university's campus andthe cafeteria's name is “Campus Café”. The cafeteria owner updates itsmenu on a weekly basis. In the past, the owner posted a new weekly menufor the coming week on the front door of the cafeteria every Mondaymorning. A downside with this advertising strategy is that few peoplecan or will memorize the menu for a week. Therefore, the owner decidesto publish the menu on the Internet so that anyone can easily tell whatwill be served on a particular day by visiting the on-line menu. Theowner knows how to use a web browser and has in his mind a rough pictureabout what the on-line menu should look like. But the owner has noexperience with the HTML language. Nor does he have any knowledge aboutthe infrastructure of the Internet.

Assuming that the owner has created a website for the cafeteria, FIGS.3A-3I are a set of schematic screenshots illustrating how the cafeteriaowner, step by step, composes the on-line menu through a browser windowin a WYSIWYG manner.

Referring to FIG. 3A, an authoring web page, displayed in a browserwindow 1000, includes a web page editing region 2000. The web pageediting region 2000 displays a replica of the composed web page, whichmay be incorporated into the authoring web page through the use of an“Iframe” that contains a URL associated with a server 130. The URL inthe Iframe is used to download from the server HTML corresponding to thecomposed web page. In other embodiments, the authoring tool or otherprogram on the client may compose the replica, in which case the Iframein the authoring page would contain a URI or URL that points to alocally generated HTML file or object corresponding to the composed webpage.

The web page editing region 2000 includes three content areas 2100, 2200and 2300, each content area including one or more editing fields. Insome embodiments, one or more of the editing fields has a predefinedheuristic instruction. The instruction suggests what type of web pagecontent is recommended for a particular structured field. For example,the content area 2100 includes a title editing field 2150, whichprovides an instruction “You may enter a title in this area” presentedin a large font style typically used by a web page's title.

Above the web page editing region 2000 are several web page editingcontrols. For example, if the cafeteria owner finishes composing the webpage, he may click the “Publish” button 1100 to submit a publicationrequest to the web page publication module of the web page editor. Theweb page publication module transmits the published web page to theserver computer. The server computer, in response, updates its databasecomponents corresponding to the web page. In this example, the servercomputer makes the newly published on-line menu available to anysubsequent user who visits the cyberspace address 1500,http://cafe.hostname.com/home.html, using any suitable browser orsimilar application. A more detailed discussion about the server-sideoperations is provided below in connection with FIG. 4.

Every now and then, the owner may pause for a moment and take a brieflook at the web page under construction to evaluate if it will have adesired look-and-feel once published. To do so, the owner clicks the“Preview” button 1200. The web page preview module, in response, bringsup a preview browser window on the client, displaying the web page inalmost exactly the same fashion as if it is published. It is noted thatthe composed web page replica displayed within the authoring web pagealso looks very similar to the published web page.

In some embodiments, there may be several minor differences between apublished web page and a previewed web page. For example, the previewedweb page may include a visual indicator, e.g., an icon or a blinking webpage title, indicating that the web page has not been formally publishedon the Internet. Any user who visits the URL of the web page stillencounters the previously published web page, if any, but not the onedisplayed in the preview browser window. Moreover, according to someembodiments, previewing a web page does not request assistance from theserver computer. The web page preview module located on the clientcomputer triggers the preview browser window. The HTML file rendered inthe preview browser window is the same copy rendered in the web pageediting region 2000.

If the owner decides to close the web page editing region 2000 withoutpublishing the web page, he may click the “Close” button 1300. Inresponse, the web page editor closes the browser window 1000, oralternately it replaces the current web page with a “clean” version ofthe authoring web page that can be used to compose a new web page or toopen and revise a user selected web page. In some embodiments, the webpage save module sends a save request including the latest version ofthe web page to the server computer. The server computer then saves thelatest version in its database. Next time, when the cafeteria owner isready to resume editing the composed web page, he may re-open theauthoring web page, including the current version of the composed webpage, by clicking a hyperlink to the web page in a browser window. Thenew browser window also contains a web page editing region receivinguser inputs with respect to the web page.

In some embodiments, the web page save module periodically, e.g., everyfew seconds, transmits the latest version of the web page to the servercomputer to avoid losing any user input. A floppy disk icon 1600 in thebrowser window 1000, through switching its look between two modes(compare FIGS. 3A and 3B), indicates whether the latest user input hasbeen saved into the server-side database. To transmit the latestversion, the web page save module may transmit to the server computerdata representing the difference between the current version of the webpage and a prior version (e.g., the most recent version saved by theserver computer). The size of the update depends on the amount of newuser input during the time interval.

Since the communication protocol between a web browser and a web serveris stateless, periodic contact between the client computer and theserver computer is desired to avoid simultaneous editing efforts frommultiple users. This is especially true in the event that the creator ofa web page may grant multiple users the right to edit the web page.Therefore, a periodic update initiated by the web page save moduleserves as a signal to the server computer that there is an ongoingcomposing session associated with the web page.

Alternatively, while one user edits a web page through one clientcomputer, the web page lock module on the client computer periodicallypings back to the server computer, indicating that the web page is stillbeing edited, and prohibits other users from editing it. When a seconduser attempts to edit the web page by, e.g., clicking a hyperlink to theweb page, a message appears on his or her computer monitor suggestingthat the web page is currently locked by another user and he or shecannot access the web page.

In some embodiments, the server computer allows the second user to breakthe lock set up by the first user. This mechanism is necessary when auser attempts to edit the web page from one client computer after heforgets to release the web page from another computer which was openedpreviously. In this scenario, the server computer sends an email messageto the user whose lock is broken, the message attaching a copy of thefinal version of the web page composed by the user so that his work willnot be lost.

To the left of the web page editing region 2000 are a few illustrativetools supported by the editing tools module. The cafeteria owner can usethem to enrich the content and style of the web page under construction.For example, the owner may upload an image into the web page editingregion 2000 and create a table listing each day's menu items. If theowner is not satisfied with the web page's current look-and-feel, he mayclick the “Edit Look” link and associate the web page with a differentweb template. As a result, the web page in the web page editing region2000 is re-rendered in accordance with the newly chosen web template.Each web template may associate particular colors, border styles, textstyles and the like with each web page region of the web template, andthese styles and other characteristics are applied to the structuredfields in the respective regions of the web page being composed. The useof fielded editing and logical styles facilitates the transformationbetween templates.

FIG. 3B is a screenshot of the on-line menu after the owner enterscertain textual input into different structured fields. In the titleediting field 2150, the owner enters the title of the web page, “CampusCafé's Homepage”. Note that the owner sets the font style of the titleto be italic, different from that of the original heuristic instructionin the field. In other words, a web page author does not have to abideby the heuristic instruction. He can decide the style of the web pagearbitrarily to his like. In the navigation bar editing field 2250, theowner creates a set of navigational links, each link referencing adifferent web page or website that is presumably of interest to avisitor to the on-line menu. For example, one of the links may point tothe website of the university's newspaper. A visitor to the on-line menucan jump to the newspaper's website by a single click on the link,learning the topic of the newspaper's recent edition. Alternatively, thecafeteria owner may put several advertising items in this region. Theadvertising items are tailored in accordance with the characteristics ofthe visitors to the web page.

In the large content editing area 2300, the owner adds a traffictracking editing field 2370. As discussed in more detail below, to trackthe traffic to the web page, the owner has to plug a counter object intothe field and the counter should be located between the word “the” and“visitor”. To do so, the owner can click the “Object” link to the left,which brings up various predefined objects including different styles ofcounter objects for the owner to choose. In the text editing field 2350,the owner provides a brief introduction to this web page and a messageabout the direction to the cafeteria. A table is going to be insertedinto this field to host the weekly menu (see, e.g., FIG. 3F). For thosevisitors who are not familiar with the cafeteria's location, a link maybe attached to the word “link” at the end of the message in FIG. 3G sothat they can seek help from a third-party service provider, e.g.,Google Maps.

Note that the floppy disk icon 1600 in FIG. 3B has a different look fromthe one shown in FIG. 3A. This is because the screenshot is taken rightafter the owner finishes entering certain input and before the web pagesave module has a chance to transmit the input to the server computer.Once the new user input is transferred to and saved on the server side,the floppy disk icon 1600 will resume the look shown in FIG. 3A.

FIG. 3C illustrates how the cafeteria owner adds an image, e.g., the“Happy Face” to the web page, according to some embodiments. To do so,the owner selects the “Image” link to the left, notifying the web pageeditor that he is going to add an image to the web page. The web pageeditor, in response, inserts a user specified image at the locationindicated by the user's cursor when the user selects the Image link.

Illustratively, the owner chooses the title editing field 2150 byclicking a mouse button on the right end of the field. The web pageeditor, in response, highlights the field's boundary by, e.g., making itwider or blinking, indicating that the title editing field is chosen tohost the image. The web page editor brings up an image inserting dialogbox 2140 for the owner to identify the source of the image. In thisembodiment, the dialog box 2140 lists three potential sources for theimage. For example, the owner may have pre-loaded a number of files(including images) into the server computer using the file uploadmodule. He can choose one of them from the dropdown list 2110.Otherwise, the owner may identify the image by entering an image URL inthe URL field 2120 or by browsing the file system of the local clientcomputer to specify a file location 2130 of an image file to be uploadedto the server. In some embodiments, the image identified in the fields2120 or 2130 automatically becomes a new member in the dropdown list2110 after the image is inserted into the web page.

In the present embodiment, the owner chooses to upload the “Happy Face”image from the local client computer and hits the “OK” button in theimage inserting dialog box 2140. As a result, the image appears in thetitle editing field 2150 at the location within that field previouslyspecified by the owner (by clicking the mouse button while pointing tothe location) and the image inserting dialog box 2140 disappears. Notethat the owner can cancel the image inserting operation by clicking the“Cancel” button in the dialog box 2140 or by simply going back andre-clicking the “Image” link before clicking the “OK” button.

In some embodiments, if the owner clicks the mouse button at a locationoutside all existing editing fields, the web page editor creates a newinstance of a structured field surrounding the position where the mousebutton click occurs. The image is loaded into this newly created fieldin the same manner as discussed above.

Sometimes, a web page author may not be satisfied with the initialchosen image location and would like to relocate the image to anotherlocation within the same or a different field. FIG. 3D is screenshotillustrating how the web page editor supports this image relocatingoperation. For illustrative purposes, the owner now decides to move the“Happy Face” image to the left of the web page title. In someembodiments, while a replica copy 2170 of the image is dragged towardsthe left by the mouse pointer, the original copy 2160 of the “HappyFace” image remains at its original location in the editing field 2150to remind the owner of the current web page style. There is at least onevisually distinct feature separating the two copies of the image, e.g.,the replica copy 2170 may be configured to look more transparent thanthe original copy 2160.

In some embodiments, an image in a structured field can be in only oneof three “position states:” 1) centered as its own paragraph (i.e., itis either above the first paragraph of text in the field, below the lastparagraph of text in the field, or between two paragraphs of text); 2)floating left of a paragraph of text (i.e., the top edge of the image isat the same vertical position as the top of a particular paragraph inthe field, and the left edge of the image is aligned with what wouldotherwise be the left margin of the paragraph of text; or 3) floatingright of a paragraph (i.e., the top edge of the image is at the samevertical position as the top of a particular paragraph in the field, andthe right edge of the image is aligned with what would otherwise be theright margin of the paragraph of text).

When a user selects (e.g., clicks on) an image in a structured field andbegins dragging it, the original image remains in place while atranslucent version of the image becomes draggable. The user can dragthe translucent version of the image around the field freely. The opaqueversion of the image, however, snaps to new locations as the user dragsit. In particular, the opaque version of the image snaps to the nearestposition that conforms to the above position state rules. When the userstops dragging the image, the last position of the opaque version of theimage becomes the new position of the image. Moreover, a user can insertor move multiple images to the same position state (e.g., the firstposition state) in the same “paragraph.” As the user drags an image, theuser can reorder it within a “paragraph” that has multiple images. Theoverall effect of this methodology of moving images is a highlyintuitive experience that, while restrictive, generally gives users adesirable outcome for the positions of their images, while making itdifficult to produce undesirable outcomes (i.e., web pages that appearbadly composed).

FIG. 3E illustrates how the web page looks like after the ownerpositions the “Happy Face” image 2180 at the left end of the titleediting field 2150. Note that the web page editor automatically shiftsthe title in the field to the right to leave sufficient space for theimage. In other words, the web page editor re-adjusts the layout of theremaining content objects in a field, be it a text paragraph or an imageor both, in accordance with the movement of a relocated content object(e.g., an image). The owner can move the relocated content object intoor out of a structured field or within the same structured field. If thecontent object moves out of the field, the remaining content objects arerelocated accordingly to utilize the space left by removing the contentobject from the field. If the content object moves into the field, theother content objects are moved to set aside sufficient space for theincoming content object. The user input interpreter 252 (FIG. 2B), bymonitoring movement of the mouse pointer and user keystrokes, enablesthe human-computer interactive web page composing and editing featuresand methods described here.

FIG. 3F is a screenshot illustrating the construction of a table in oneof the structured fields. In this embodiment, table is a special type ofobject associated with the “Object” link to the left of the web pageediting region. The cafeteria owner clicks the mouse button on aposition within the editing field 2350 where the table is allocated. Theweb page editor inserts an initial, predefined table at the positionindicated by the user's cursor. The user can then remove and insert rowsand columns, at user specified locations with respect to the table,using graphical user interface (GUI) tools displayed with the table.Rows and columns can also be reordered using the displayed GUI tools.

In this example, the web page editor responds to the cafeteria owner'scommands by creating a 5-row table 2360 in the middle of the editingfield 2350, each row having two columns and hosting the lunch menuserved at a particular weekday. Right above the table 2360 are atable-level control dropdown list 2363 and two column-level controldropdown lists 2365, one for each column of the table. The owner choosesa desired table alignment strategy, e.g., center-aligned, in thedropdown list 2363 and the web page editor adjusts the table 2360accordingly. Using each column-level control dropdown list 2365, theowner can specify a text alignment strategy for each individual column.In this particular embodiment, the left column is set to becenter-aligned and the right column is set to be left-aligned. In someembodiments, the web page editor may enable a set of row controls foreach row of the table. Note that the use of the dropdown list for tablecontrols is only for illustrative purposes. One skilled in the art maychoose a different type of control mechanism to achieve the same orsimilar results.

Referring again to FIG. 3F, a counter object 2380 is plugged into thetraffic tracking field 2370. In some embodiments, the counter 2380 isanother special type of object that a web page author can choose byclicking the “Object” link to the left of the web page editing region.The counter tracks the number of visits to the web page since aparticular date.

FIG. 3G is a screenshot illustrating how to associate a content objectin the web page with a link to another web page or website. Thisoperation is similar to the operation of inserting an image into the webpage. The owner clicks the “Link” link to the left of the web pageediting region 2000 to notify the web page editor that it should bringup a dialog box. If text is selected when the link command is selected,that text is transformed into a link.

As shown in FIG. 3G, the linking dialog box 2355 pops up near theuser-selected content object, the word “link”. The linking dialog box2355 provides two potential sources for the link. The dropdown list 2357includes other web pages composed by the owner, which may be associatedwith the web page under construction. For example, the on-line menu webpage may be one of many web pages in a personal website constructed bythe cafeteria owner. In this example, the other web pages associatedwith the website are listed in the dropdown list 2357. Alternatively,the cafeteria owner may enter a URL (in a second editable box 2359). Forinstance, the URL entered by the owner in box 2359 may point to anotherwebsite or web page that offers a service that the owner deems useful tohis on-line menu. In the example shown in FIG. 3G, the owner establishesa link to Google's mapping service,http://maps.google.com/maps?oi=map&q=1+Adams+Street,+Boston, +MA. Usingthis link, a new customer to the cafeteria is led to a map showing thelocation of the Campus Café (which, in this example, is the fictionaladdress 1 Adams Street, Boston, Mass.).

FIG. 3H is a screenshot of the authoring web page right beforepublication of the newly composed web page on the Internet. FIG. 3I is ascreenshot of the same web page rendered in a separate browser window3000 after its publication. The web page has an almost identicallook-and-feel as it had when displayed in the web page editing region2000 in FIG. 3H. The only noticeable difference is that the dashed lineboundaries associated with the editing fields and the table controldropdown lists are not shown in the published web page. Other than that,all the content objects in the published web page are rendered in thebrowser window 3000 in a WYSIWYG manner.

In a client computer, the various content objects of a web page enteredby a web page author typically exist in the form of an HTML file and itsassociated resource files (e.g., image files), because the web page isrendered from an HTML file.

In the server computer, as mentioned above, the various content objectsof a web page are organized into a set of (key, value) pairs, each keyidentifying a structured field in the web page and each correspondingvalue identifying the web page content appearing in the structuredfield. In some embodiments, the (key, value) pairs of a web page canalso specify characteristics of a field or its content, such as a fontor font characteristic (e.g., italic, or bold), or image size, or thelike. For instance, font characteristics for content in a field areindicated using HTML tags within the value of the (key, value) pair forthat field. Thus, the value in a key-value pair may be or include HTMLencoded text. In some embodiments, when the server computer receives oneor more key-value pairs for a composed page, the server filters thekey-value pairs to remove one or more predefined classes of content. Forinstance, the server may remove all JavaScript or ECMAScript, if any,from the values of the received key-value pairs before those key-valuepairs are durably stored. In this example, content is removed from thekey-value pairs in order to avoid potential security or privacybreaches. In other examples, content may be removed from the key-valuepairs in order to further other goals or to implement predefinedpolicies.

Besides the (key, value) pairs, the web page has an associated webtemplate that includes information defining the look-and-feel of the webpage. In some embodiments, the server computer stores a number ofpredefined web templates in its storage device, each identified by aunique template ID. Before entering any content into a web page editingregion, the web page author chooses one of the web templates that hesees fit for the web page. At the end of the web page construction, theserver computer associates a set of (key, value) pairs with a particulartemplate ID referencing the web template chosen by the web page author.If the web page author does not like a previously chosen web template,he can replace it with another one using the “Edit Look” link. The webpage author may design his own web template if none of the predefinedweb templates satisfies his needs.

FIG. 4 is a block diagram illustrating the structure of a servercomputer 400 in accordance with some embodiments of the presentinvention. Like the client computer 200, the server computer 400 alsoincludes one or more processing units (CPUs) 402, one or more network orother communications interfaces 410, memory 412, and one or morecommunication buses 414 for interconnecting these components. The servercomputer 400 optionally includes a user interface 404 that comprises adisplay device 406 and a keyboard and/or pointer device 408. The memory412 includes high speed random access memory, such as DRAM, SRAM, DDRRAM or other random access solid state memory devices; and may includenon-volatile memory, such as one or more magnetic disk storage devices,optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. The memory 412 may optionallyinclude one or more storage devices remotely located from the CPUs 402.In some embodiments, the memory 412 stores the following elements,modules and data structures, or a subset or superset thereof:

-   -   an operating system 416 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module (or instructions) 418 for        connecting the server computer 400 to other computers via the        one or more network communications interfaces 410 (through wired        or wireless connections), using the Internet, other wide area        networks, local area networks, metropolitan area networks, or        the like;    -   a web server module (or instructions) 420 for handling user        access requests for web pages from different client computers,        including receiving a user's access request for a web page,        verifying the existence of the web page and the user's access        privilege to the web page, identifying or dynamically generating        an HTML file corresponding to the web page and transmitting the        HTML file to a requesting client computer;    -   a web page processor module (or instructions) 422 for        dynamically generating an HTML file 440 corresponding to a        user-requested web page using its associated set of (key, value)        pairs and web template;    -   one or more system-defined or user-defined web templates 424,        each web template corresponding to a specific look-and-feel        design for a web page;    -   metadata 426, the metadata further including one or more website        attributes 428, one or more web page attributes 430, etc.; and    -   content data 432, the content data 432 further including a web        page repository 434 hosting a plurality of web pages 440 and an        associated file repository 436 hosting files (e.g., images)        referenced by the web pages.

FIGS. 5-7 are block diagrams illustrating data structures used forhosting the various types of data mentioned above in accordance withsome embodiments of the present invention.

FIG. 5 is a block diagram illustrating the data structure of a webtemplate 500. The web template includes a template ID that uniquelyidentifies the web template and a template definition that partitions abrowser window into a plurality of regions, each region corresponding tozero or more keys. The keys are assigned to a specific location inspecific region of the web template. When the web template is referencedby a particular web page, corresponding values are inserted intodifferent regions and the web template is converted into a web page. Itmay be noted that keys associated with the template regions are alsoassociated with the structured fields inserted into these templateregions when reconstructing the web page.

As mentioned above, a website typically includes many web pages, eachone covering a specific topic related to the website. FIG. 6 shows ablock diagram 610 illustrating typical attributes used forcharacterizing a website. These attributes include:

-   -   website ID, which uniquely identifies the website within the        server computer;    -   website name, which can be a user-provided character string        defining the website's URL;    -   website title, which can be a user-provided character string        indicating the general topic of the website;    -   primary user ID, which identifies a web page author who is        primarily responsible for authoring the web pages associated        with the website, e.g., the creator of the website; and    -   creation time of the website.

Each website includes one or more web pages. To uniquely identify a webpage associated with a website, the web page is assigned a set of webpage attributes 620 such as:

-   -   web page ID, which uniquely identifies the web page within a        website;    -   web page name, which can be a user-provided character string        defining the web page's URL;    -   web page title, which can be a user-provided character string        indicating the topic of the web page;    -   primary user ID, which identifies a web page author who is        primarily responsible for authoring the web page;    -   publication version, which identifies the version of the web        page that has been released to the public or a designated group        of visitors; and    -   website ID, which identifies the website with which the web page        is associated.

In some embodiments, the server computer maintains multiple versions ofa web page that have been composed at different dates. One benefitinherent in this storage strategy is that a web page author is able torefer to an old version for reference purposes while composing a newversion. This storage strategy also allows the web page or website'sowner or administrator to specify that the published version of the webpage is a version other than the latest version composed (or in theprocess of being composed) by the web page author. In one embodiment,the server computer maintains every version of a composed web page,using delta compression (also called differential encoding) or othertechniques to efficiently represent the differences between versions andto enable the reconstruction of any selected version in a sequence ofversions of the composed web page.

When the web page processor 422 receives a request for a web page, itidentifies its publication version in the set of web page attributes 620and then retrieves from a server-side database a set of (key, value)pairs corresponding to the publication version and an associated webtemplate. Using this retrieved information, the web page processordynamically generates an HTML file for the requested web page and passesthe HTML file to the web server 420. The HTML file is then transmittedback to a client computer and rendered therein. In some embodiments,since the requested version is the published version, the web pageprocessor 422 does not examine the privilege of the requesting user todetermine whether to transmit the web page authoring tool to the clientcomputer. In some embodiments, the HTML file is transmitted to therequesting user as it is generated by the web page processor 422, andthe web server 420 does not store a copy of the HTML file. However, insome such embodiments, copies of the HTML files for web pages that havehigh request rates may be stored in a cache in order to avoidreconstructing those web pages having high request rates. A web pagehaving a high request rate may defined as a web page having more than athreshold number of requests per predefined time period, or having anaverage number of requests per predefined time period that exceeds aparticular threshold.

FIG. 7 is a block diagram illustrating the data structure of a web page700. The web page includes a template ID that uniquely identifies theweb template that specifies the web page's look-and-feel. Note that theweb page includes multiple versions, each version corresponding to a setof (key, value) pairs created at a particular date. The web page authorcan arbitrarily specify any one of the multiple versions to be thepublication version and update the web page attributes 620 accordingly.FIG. 7 is a conceptual diagram. In one embodiments, the actual datastored for successive versions is compressed, for instance using deltacompression, so that the system stores the differences between versionsinstead of complete copies of each version of the web page.

Each of the above identified modules or programs corresponds to a set ofinstructions for performing one or more functions described above. Thesemodules and programs (i.e., sets of instructions) need not beimplemented as separate software programs, procedures or modules, andthus various subsets of these modules may be combined or otherwisere-arranged in various embodiments. In some embodiments, the memory maystore a subset of the modules and data structures identified above.Furthermore, the memory may store additional modules and data structuresnot described above.

In practice, and as recognized by those of ordinary skill in the art,items shown separately could be combined and some items could beseparated. For example, some items shown separately in FIG. 4 could beimplemented on single servers and single items could be implemented byone or more servers. The actual number of servers used to implement anserver system and how features are allocated among them will vary fromone implementation to another, and may depend in part on the amount ofdata traffic that the system must handle during peak usage periods aswell as during average usage periods.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific embodiments. However, theillustrative discussions above are not intended to be exhaustive or tolimit the invention to the precise forms disclosed. Many modificationsand variations are possible in view of the above teachings.

1. A method for composing a user-defined web page, comprising: at aclient, using a web browser executed at the client: displaying in afirst browser window an authoring web page, including displaying agraphical user interface of an authoring tool that is embedded in theauthoring web page; the displayed graphical user interface for composingthe user-defined web page; using the displayed graphical user interfaceof the authoring tool to receive user instructions, and responding tothe user instructions by placing instances of predefined structuredfields in the user-defined web page and associating user-specifiedcontent with the instances of the predefined structured fields; anddisplaying a preview of the user-defined web page.